/******************************************************************************
 *      Mestrado em Ciência da Computação - UFMS
 *		Redes de Computadores - Prof. Dr. Ronaldo Alves Ferreira
 *		Alunos: Geraldo Landre, Marcel Tolentino, Vinícius Bueno
 *****************************************************************************/
/* tmclear.c - tmclear */

#include "tcptimer.h"

/*------------------------------------------------------------------------
 *  tmclear -  desmarcar o temporizador indicado
 *------------------------------------------------------------------------
 */
int tmclear(int port, void *msg)
{
    struct	tqent	*prev, *ptq;
    int		timespent;

    long ctr100 = CLOCKS_PER_SEC/100;

    sem_wait(&tqmutex);
    prev = 0;
    for (ptq = tqhead; ptq != NULL; ptq = ptq->tq_next) {
        if (ptq->tq_port == port && ptq->tq_msg == msg) {
            timespent = ctr100 - ptq->tq_time;

            if (prev)
                prev->tq_next = ptq->tq_next;
            else
                tqhead = ptq->tq_next;

            if (ptq->tq_next)
                ptq->tq_next->tq_timeleft += ptq->tq_timeleft;
            sem_post(&tqmutex);
            
            free(ptq);
            return timespent;
        }
        prev = ptq;
    }
    sem_post(&tqmutex);
    return SYSERR;
}
